#include <bits/stdc++.h>

using namespace std;

// 统计各位数字都不同的数字个数
// 给你一个整数n，代表十进制数字最多有n位
// 如果某个数字，每一位都不同，那么这个数字叫做有效数字
// 返回有效数字的个数，不统计负数范围
// 测试链接 : https://leetcode.cn/problems/count-numbers-with-unique-digits/

class Solution 
{
public:
    int countNumbersWithUniqueDigits(int n) 
    {
        if(n == 0) return 1;
        // n = 1 -> 10
        // n = 2 -> 9 * 9
        // n = 3 -> 9 * 9 * 8
        // n = 4 -> 9 * 9 * 8
        // ...都累加起来...
        int ans = 10; // n = 1
        for(int s = 9, i = 9, k = 2; k <= n; --i, ++k)
        {
            s *= i;
            ans += s;
        }
        return ans;
    }
};